import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import styleImport, { VantResolve } from 'vite-plugin-style-import';


import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

//使用 vite 创建项目完成后会自动生成 一个 vite.config.js  参考下面地址   
//  https://www.cnblogs.com/wingring/p/16067380.html

export default defineConfig({

    plugins: [      //配置需要使用的插件列表
        vue(),

        AutoImport({
            resolvers: [ElementPlusResolver()],
        }),
        Components({
            resolvers: [ElementPlusResolver()],
        }),

        styleImport({
            resolves: [VantResolve()],
        }),
    ],
    //静态资源服务的文件夹
    publicDir: "public",

    //本地运行配置，以及反向代理配置
    server: {
        host: '0.0.0.0',
        port: 3000,
        // 反向代理
        proxy: {
            '/v1': {    //业务类的接口请求地址，这里的v1可以是后端的工程名
                target: 'http://81.71.70.7:5000',//代理的地址
                changeOrigin: true,
                pathRewrite: {
                    "^/v1": ""  
                  }
            }
        }
    },
  
     // css    
    css: {
            preprocessorOptions: {
                scss: {
                    charset: false
                }
            },
            postcss: {
                plugins: [
                    {
                        postcssPlugin: 'internal:charset-removal',
                        AtRule: {
                            charset: (atRule) => {
                                if (atRule.name === 'charset') {
                                    atRule.remove();
                                }
                            }
                        }
                    }
                ],
            },
        } ,

    //打包配置
    build:{
        //浏览器兼容性  "esnext"|"modules"
        target: "modules",
        //指定输出路径
        outDir: "dist",
        //生成静态资源的存放路径
        assetsDir: "static",
        //小于此阈值的导入或引用资源将内联为 base64 编码，以避免额外的 http 请求。设置为 0 可以完全禁用此项
        assetsInlineLimit: 4096,
        //启用/禁用 CSS 代码拆分
        cssCodeSplit: true,
        //构建后是否生成 source map 文件
        sourcemap: false,

        //当设置为 true，构建后将会生成 manifest.json 文件
        manifest: false,
        // 设置为 false 可以禁用最小化混淆，
        // 或是用来指定使用哪种混淆器
        // boolean | 'terser' | 'esbuild'
        minify: "terser", //terser 构建后文件体积更小
        //传递给 Terser 的更多 minify 选项。
        terserOptions: {
        },
        //设置为 false 来禁用将构建后的文件写入磁盘
        write: true,
        //默认情况下，若 outDir 在 root 目录下，则 Vite 会在构建时清空该目录。
        emptyOutDir: true,
        //启用/禁用 brotli 压缩大小报告
        brotliSize: true,
        //chunk 大小警告的限制
        chunkSizeWarningLimit: 1500

    }


})
